using System;

using Atomic.Libraries.Physics.Units;

namespace Atomic.Libraries.Physics
{
	public static class Conversions
	{
		/// <summary>
		/// The value of 1 Pa (eV/Å^3/Pa) in internal units (eV/Å^3).
		/// </summary>
		public static double Pascal
		{
			get
			{
				//return Pressure.FromPascal(1.0).ToElectronVoltPerCubicAngstrom();
				return 6.2415093418967042e-12; // eV/Å^3/Pa
			}
		}

		/// <summary>
		/// The value of 1 GPa (eV/Å^3/GPa) in internal units (eV/Å^3).
		/// </summary>
		public static double GigaPascal
		{
			get
			{
				//return Pressure.FromGigaPascal(1.0).ToElectronVoltPerCubicAngstrom();
				return 0.0062415093418967038; // eV/Å^3/GPa
			}
		}

		/// <summary>
		/// The value of 1 kbar (eV/Å^3/kbar) in internal units (eV/Å^3).
		/// </summary>
		public static double KiloBar
		{
			get
			{
				//return Pressure.FromKiloBar(1.0).ToElectronVoltPerCubicAngstrom();
				return 0.00062415093418967036; // eV/Å^3/kbar
			}
		}

		/// <summary>
		/// The value of 1 atm (standard atmospheric pressure) (eV/Å^3/atm) in internal units (eV/Å^3).
		/// </summary>
		public static double StandardAtmosphere
		{
			get
			{
				//return Units.Constants.StandardAtmospherePressure.ToElectronVoltPerCubicAngstrom();
				return 6.3242093406768354e-07; // eV/Å^3/atm
			}
		}

		/// <summary>
		/// The value of 1 u (atomic mass unit) (eV*s^2/Å^2/u) in internal units (eV*s^2/Å^2).
		/// With the chosen energy unit (eV) and length unit (Å) this is the natural mass unit (cf. kg = J*s^2/m^2).
		/// </summary>
		public static double AtomicMassUnit
		{
			get
			{
				//return Mass.FromDalton(1.0).ToElectronVoltSquareMeterPerSquareSecond();
				return 1.0364269192560875e-28; // eV*s^2/Å^2/u
			}
		}

		/// <summary>
		/// The value of 1 m/s (Å/s/(m/s)) in internal units (Å/s).
		/// </summary>
		public static double MeterPerSecond
		{
			get
			{
				//return Velocity.FromMeterPerSecond(1.0).ToAngstromPerSecond();
				return 1.0e10; // Å/s/(m/s)
			}
		}
	}
}
